const { expressjwt } = require('express-jwt')

//导入jwt相关配置文件
const jwtConfig = require('../../config/jwt.config.js')

//导入redis判断token缓存文件
const { isBlacklisted } = require('../redis/index.js')


//解析jwt,并添加不用token的白名单
module.exports = expressjwt({
	secret: jwtConfig.jwtSecret, 
	algorithms: jwtConfig.algorithms,
	// 验证前检查是否在黑名单
	isRevoked: async (req, token) => {
		if (!token.payload.jti) {
		  return true; // 没有jti的令牌直接视为无效
		}
    return await isBlacklisted(token.payload.jti);
  }
}).unless({ path: jwtConfig.whiteInstance })